20170326 ABAP调用外部webservice实例 您所在的位置:网站首页 sap abap webservice 20170326 ABAP调用外部webservice实例

20170326 ABAP调用外部webservice实例

2023-08-04 12:22| 来源: 网络整理| 查看: 265

调用外部webservice 使用Tcode;

SICF

SPROXSET      设置创建proxy 的权限

SE80

SOAMANAGER

 

 

 

一、目的:调用外部SRM系统的 webservice:http://10.4.64.19:8090/srm/service/IMatnrResourceService?wsdl

:这个是我们这边测试系统的地址8090是端口号10.4.64.19是服务器地址 

 

二、实施

**前提:外部提供可用的web service,通常为链接

步骤: 1. SE80,创建web service proxy 1)SE80,选择package,右击->create->Enterprise service 2) Object Type, 选择Service Consumer,继续 3)Select source,选择URL/HTTP Destination(有时只有URL),继续 4)URL中输入网址,继续 5)分配package和前缀(随意),完成 6)保存,激活

 

生产PROXY: ZTST_SRM_001CO_IMATNR_RESOURCE

 注意:保存,激活!

+1,

激活后可以F8 运行

重点提前说:soamanage web服务配置时注意!!!

这四项不要填错:

     

 

2. LPCONFIG,创建逻辑端口(这个tcode 已弃用了->soamanager)

 

1)输入proxy class(第1步中生成的proxy name)和logical port(随意,通常同 proxy class),选中Default port 2)输入描述,选中message id 和 state management 3)调用参数:URL输入去掉?WSDL的地址 4)操作:右侧SOAP操作,输入xml文件中soapAction等号后的内容,包括引号

 

 代理类:ZTST_SRM_001CO_IMATNR_RESOURCE

保存!激活!

 

N二、SOAMANAGER 做web服务配置;

一、 Soamanager 配置服务消费者

输入事务代码跳转至网页:

http://upd.changhong.com:8000/sap/bc/webdynpro/sap/appl_soap_management?sap-language=ZH

 

Web服务配置

 

搜索依据:消费者代理;搜索模式:ZCO_REQUEST_HANDLE_MLPURCHASE;执行

 

选中消费者代理,点Apply Selection

 

创建逻辑端口,注意配置类型:手动配置

 

Transport Settings

URL Access Path:

/default/WP_SOA/APP_SRM_SERVICES/Proxy_Services/TA_SAP/handleMLPurchaseOrderService_PS?wsdl

Computer Name of Access URL: 10.3.15.224(测试)  10.3.15.214(生产)

User Name for Proxy Acess: sap

Password of Proxy User: password1

保存

SAP调用PROXY

 

ERP调用Proxy 创建函数ZMLSCP1_FR0013 用于发送采购订单,传入参数订单抬头和订单行项。 代码注意的几个点: 1. request_data 请求xml格式字符串的拼接(字符串拼接宏及转义字符的处理) 2. 代理proxy的调用(异常的处理) 3. return_data 返回xml格式字符串消息的解析(strans转换的使用)

 

  

 

3.abap调用web service

例子:

DATA:lo_clientproxy TYPE REF TO z_proxy. "proxy class DATA:lo_input TYPE z_input, "输入参数 lo_output TYPE z_output. "输出参数 lo_request = request. CREATE OBJECT lo_clientproxy. TRY. CALL METHOD lo_clientproxy->z_method "web service函数 EXPORTING to_input = lo_input IMPORTING to_output = lo_output. * ***Write Out the Basic Information CATCH cx_ai_system_fault INTO g_sys_exception."捕获错误 IF g_sys_exception IS NOT INITIAL. WRITE: 'Error:Communication Error'. ENDIF. CATCH cx_ai_application_fault INTO g_app_exception. IF g_app_exception IS NOT INITIAL. WRITE 'Error:Application Error'. ENDIF. ENDTRY.

 

 

测试问题一:第一步时,遇到问题HTTP 404问题,但是链接直接可以浏览器打开

解决方案: 1. 将网址链接(JAVA发布的web service通常以?wsdl结尾),另存到本地,保存为 xml文件 2. 修改xml文件,删除下面内容,删除后保存 …… ……. 3. SE80创建web service proxy时,就Select source,选择Local file,其他都一 样刚看一个链接里有介绍:http://hi.baidu.com/tktik/item/fcaf0e53e26cbe3a32e0a951

测试问题二:连接总是不同,一直有cx_ai_system_fault异常解决方案: 将逻辑端口中的域名改为ip地址

**值得注意的是,实现该功能,不需要创建RFC连接



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有